// src/axios/index.js
import axios from "axios";
import { ElMessage } from "element-plus"; // 使用 element-plus 的消息提示

// 创建 axios 实例
const api = axios.create({
    baseURL: "http://localhost:8888",
    timeout: 5000, // 添加超时时间
});

// 请求拦截器
api.interceptors.request.use(
    config => {
        // 在发送请求之前做些什么
        const token = localStorage.getItem('token');
        if (token) {
            config.headers['Token'] = token;
        }
        return config;
    },
    error => {
        // 对请求错误做些什么
        console.log('request error:', error);
        return Promise.reject(error);
    }
);

// 响应拦截器
api.interceptors.response.use(
    response => {
        // 对响应数据做点什么
        const res = response.data;
        
        if (response.status === 200) {
            return res;
        } else {
            // 根据不同的状态码显示不同的错误信息
            handleErrorStatus(response.status);
            return Promise.reject(new Error(res.message || 'Error'));
        }
    },
    error => {
        // 对响应错误做点什么
        console.log('response error:', error);
        
        if (error.response) {
            handleErrorStatus(error.response.status);
        } else {
            ElMessage.error('网络错误，请检查网络连接！');
        }
        
        return Promise.reject(error);
    }
);

// 处理错误状态码的函数
const handleErrorStatus = (status) => {
    switch (status) {
        case 500:
            ElMessage.error('服务器错误！');
            break;
        case 401:
            ElMessage.error('请重新登录！');
            // 可以在这里添加登出逻辑
            break;
        case 404:
            ElMessage.error('未找到页面');
            break;
        case 403:
            ElMessage.error('权限不足！');
            break;
        default:
            ElMessage.error('未知错误！' + status);
    }
};

// 保持原有的 get 和 post 方法
export const get = (url, params) => {
    return api.get(url, { params });
};

export const post = (url, params) => {
    return api.post(url, params);
};

export default api;